<?php 
/**
 * 商品主信息表模型
 * @author 杨帆 
 */
class GoodsModel extends Model{
    //表名称
    public $table = 'Goods';
    //自动验证
    public $validate = array(
        array('gname','nonull','商品名称不能为空',2,3),
        array('unit','nonull','单位名称不能为空',2,3),
        array('sales_price','nonull','市场价不能为空',2,3),
        array('shop_price','nonull','商城价格不能为空',2,3),
    );
    
    /**
     * 添加
     */
    public function addData(){
        //操作goods表的验证************
        //create方法触发自动完成和自动验证
        if(!$this->create()) return false;
        //如果上传方法（_thumb）有错误会压入$this->error中
        //所以判断如果$this->error有错误的时候，那就证明上传有问题了
        //返回false 不用添加了
        if($this->error) return false;
        
        //操作GoodsEntry表的验证************
        $modelEn = K('GoodsEntry');
        if(!$modelEn->create()){
            //把GoodsEntry模型的错误，压入到当前模型，因为控制器就使用的是当前模型的错误
            $this->error = $modelEn->error;
            return false;
        }
       
        //操作GoodsAttr表的验证************
        $modelAt = K('GoodsAttr');
        //组合数据
        $data = $this->_createData($_POST); 
        //在数据库增加数据，并返回新的自增id;
        $gid = $this->add($data);
        //给第二张表添加数据
        $modelEn->addData($gid);
        //给第三张表添加数据
        $modelAt->addData($gid);
        //把添加商品选中的状态，存入到缓存，下次编辑的时候就可以直接调用了
        S('selected_' . $gid, $_POST['selected']); 
//      die;
        return true;       
    }
    
    /**
     * 编辑数据
     */
    public function editData($gid){
        //操作goods表的验证************
        //create方法触发自动完成和自动验证
        if(!$this->create()) return false;
        //如果上传方法（_thumb）有错误会压入$this->error中
        //所以判断如果$this->error有错误的时候，那就证明上传有问题了
        //返回false 不用添加了

        if($this->error) return false;
        
        //操作GoodsEntry表的验证************
        $modelEn = K('GoodsEntry');
        if(!$modelEn->create()){
            
            //把GoodsEntry模型的错误，压入到当前模型，因为控制器就使用的是当前模型的错误
            $this->error = $modelEn->error;
            return false;
        }
        
        //操作GoodsAttr表的验证************
        $modelAt = K('GoodsAttr');
         //组合数据
        $data = $this->_createData($_POST); 
        //完成第一张表的修改
        $this->where("gid={$gid}")->update();
        //给第二张表添加数据
        $modelEn->editData($gid);
        //给第三张表添加数据
        $modelAt->editData($gid);
        //把添加商品选中的状态，存入到缓存，下次编辑的时候就可以直接调用了
        S('selected_' . $gid, $_POST['selected']); 
        return true;
    }
    /**
     * 组合数据
     */
    public function _createData($data){
        //获取类型id;
        $cid = $data['class_cid'];
        $tid = M('class')->field('type_tid')->where("cid={$cid}")->find();
        //组合数据
        $data['pic'] = isset($data['pic']) ? $data['pic'] : '';
        $arr = array(
            'gname' => $data['gname'],//商品名称
            'unit' => $data['unit'],//单位
            'sales_price' => intval($data['sales_price']),//市场价
            'shop_price' => intval($data['shop_price']),//商城价
            'click' => $data['click'],//点击次数
            'pic' => $data['pic'],//列表图
            'time' => time(),//上架时间
            'type_tid' => intval($tid['type_tid']),//类型id
            'class_cid' => intval($data['class_cid']),//分类id
            'brand_bid' => intval($data['brand_bid']),//品牌id
            'auser_aid' => intval($_SESSION['aid'])//管理员id
        );
        return $arr;
    }
 }
 